// for循环 => 普通数组
// for...in 循环 => 键值对
// 函数式的遍历方法 数组的forEach方法
// 之前的方法具有局限性
// for...of作为遍历所有数据结构的统一方式
const arr = [100, 200, 300, 400]
for (const item of arr) {
  console.log(item)
  if (item > 100) {
    break
  }
}
// 100
// 200
// 取代forEach方法 可以使用break关键词
// forEach不行/arr.some()/arr.every()方法可以
// 伪数组也可以 元素节点列表也可! Set Map也可!
const s = new Set([100, 200, 300, 400])
for (const item of s) {
  console.log(item)
  if (item > 100) {
    break
  }
}
// 100
// 200
const m = new Map()
m.set('foo', '1')
m.set('boo', '2')
// for (const item of m) {
//     console.log(item);
// }
// [ 'foo', '1' ]
// [ 'boo', '2' ]
// 直接解构
for (const [key, value] of m) {
  console.log(key, value)
  // foo 1
  // boo 2
}
// -----------------------------------------------------------
// // 遍历对象
// const obj = { foo: 123, boo: 456 };
// for (const item of obj) {
//     console.log(item);
// }
// // TypeError: obj is not iterable
